// 定义集合需要的参数
// 定义（点、边、面、体）组需要的参数
const CollectionsMenus = {
  // 面组(面)
  Surface: {
    SelectedEntities: {
      Type: ['Face'],
      // 混合选择
      // Mix: true, 目前就一项，暂时不需要Mix
    },
  },
  // 节点集合(面，边，点)
  Node: {
    SelectedEntities: {
      Type: ['Face', 'Edge', 'Vertex'],
      // 混合选择
      Mix: true,
    },
  },
  // 网格集合(体)
  Element: {
    SelectedEntities: {
      Type: ['Volume'],
      // 混合选择
      // Mix: true, 目前就一项，暂时不需要Mix
    },
  },
  // 点组
  ReferPoint: {
    SelectedEntities: {
      Type: ['Vertex'],
    },
  },
};

/**
 * 获取对应的表单格式，如果不是表单则返回null
 * @param names 格式： [RemoveDetails]
 * @returns 表单格式
 */
const getCollectionsFormFormat = (names: string[]) => {
  let formFormat = CollectionsMenus;
  for (let i = 0; i < names.length; i++) {
    const name = names[i];
    formFormat = formFormat[name];
    if (!formFormat) {
      return null;
    }
  }
  // 遍历对象的键值
  const keys = Object.keys(formFormat).filter((key) => {
    // 判断是否有Type字段
    return formFormat[key].Type;
  });
  // 如果keys的长度是0，说明node的值不是一个表单，返回null
  if (keys.length === 0) {
    return null;
  }
  return formFormat;
};

export { getCollectionsFormFormat };
